package com.yao.mybatis.sqlnode;

import com.yao.mybatis.sqlsource.DynamicContext;
import com.yao.mybatis.utils.OgnlUtils;

/**
 * @author Administrator
 */
public class IfSqlNode implements SqlNode{
    private MixedSqlNode mixedSqlNode;
    /**
     * 布尔表达式
     */
    private String test;

    public IfSqlNode(String test,MixedSqlNode mixedSqlNode) {
        this.test=test;
        this.mixedSqlNode = mixedSqlNode;
    }

    @Override
    public void apply(DynamicContext dynamicContext) {
        // 使用Ognl的api来对test标签属性中的布尔表达式进行处理，获取布尔值
        boolean evaluateBoolean = OgnlUtils.evaluateBoolean(test, dynamicContext.getBindings().get("_parameter"));
        // 如果test标签属性中的表达式判断为true，才进行子节点的处理
        if (evaluateBoolean) {
            mixedSqlNode.apply(dynamicContext);
        }
    }
}
